package com.chalk.controller;


import com.chalk.common.util.Result;
import com.chalk.exception.ColumnNotEmptyException;
import com.chalk.model.NewsType;
import com.chalk.service.NewsTypeService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author glq
 * @since 2020-12-19
 */

@RestController
@RequestMapping("/v1/newsType")
public class NewsTypeController {
    @Autowired
    NewsTypeService newsTypeService;

    /**
     * 资讯类型列表分页
     *
     * @param map
     * @return
     */
    @GetMapping("getNewsTypeForPage")
    public Result getNewsTypeForPage(@RequestParam Map<String, Object> map) throws ColumnNotEmptyException {
        return Result.success(newsTypeService.getNewsTypeForPage(map));
    }

    /**
     * 新增资讯类型
     *
     * @param newsType
     * @return
     */
    @PostMapping("saveNewsType")
    public Result saveNewsType(@RequestBody NewsType newsType) {
        if (StringUtils.isBlank(newsType.getNewsTypeName())) {
            return Result.fail("资讯类型名称不能为空！");
        }
        Boolean f = newsTypeService.saveNewsType(newsType);
        return f ? Result.success("操作成功！") : Result.fail("操作失败");
    }

    /**
     * 修改资讯类型
     *
     * @param newsType
     * @return
     */
    @PostMapping("updateNewsType")
    public Result updateNewsType(@RequestBody NewsType newsType) {
        if (newsType.getNewsTypeId() == null) {
            return Result.fail("资讯类型id不能为空");
        }

        if (StringUtils.isBlank(newsType.getNewsTypeName())) {
            return Result.fail("资讯类型名称不能为空！");
        }
        Boolean f = newsTypeService.updateNewsType(newsType);
        return f ? Result.success("操作成功！") : Result.fail("操作失败");
    }

    /**
     * 删除资讯类型
     *
     * @param newsTypeId
     * @return
     */
    @GetMapping("deleteNewsType")
    public Result deleteNewsType(Integer newsTypeId) {
        if (newsTypeId == null) {
            return Result.fail("资讯类型id不能为空");
        }
        Boolean f = newsTypeService.deleteNewsType(newsTypeId);
        return f ? Result.success("操作成功！") : Result.fail("操作失败");
    }

    /**
     * 资讯类型列表
     * @return
     */
    @GetMapping("newsTypeToList")
    public Result newsTypeToList(){
      return Result.success(newsTypeService.newsTypeToList());
    }
}

